/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interaction;

import Flightadministration.*;
import DB.*;
import Data.*;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.util.Date;
import java.util.Vector;

/**
 *
 * @author Stefan Fellner
 */
public class FellesTesterClass {

    public static void main(String[] args) {

        try {

            ServerConnection con = new ServerConnection();
            Flightadministration admin = ServerConnection.getConnection();
            System.out.println("Verbindung zum Server hergestellt");

            /********** CREATE ***********/
            
//            //Create Airport 1
//            admin.createAirport("LAX", "Los Angeles Airport", "Los Angeles", "USA");
//            System.out.println("Airport 1 wurde angelegt!");

//            //Create Airport 2
//            admin.createAirport("STR", "Airport Stuttgart", "Stuttgart", "Germany");
//            System.out.println("Airport 2 wurde angelegt!");

//            //Create Airport 3
//            admin.createAirport("LHR", "London Heathrow", "London", "UK");
//            System.out.println("Airport 3 wurde angelegt!");
//
//            //Create Airline 1
//            admin.createAirline("Air Berlin");
//            System.out.println("Airline 1 wurde angelegt!");
            
//            //Create Airline 2
//            admin.createAirline("Air France");
//            System.out.println("Airline 2 wurde angelegt!");
            
//            //Create Airline 3
//            admin.createAirline("Germanwings");
//            System.out.println("Airline 3 wurde angelegt!");
////
//            //Create Aircraft
//            admin.createAircraft("AB324", 1, 1);
//            System.out.println("Aircraft wurde angelegt!");
////
//           //Create TypeOfAircraft
//            admin.createTypeOfAircraft("Boing727", 1);
//            System.out.println("TypeOfAircraft wurde angelegt!");
//////
////          //Create Flight
//           admin.createFlight("09:30", "Freitag", "17:00", "Sonntag", "DAL", "LAX", 1);
//           System.out.println("Flight wurde angelegt!");
////
//            //Create FlightRealization
//
//            /* Dieses DATEobjekt verwendet das aktuelle Datum */
//            Date d1 = new Date(System.currentTimeMillis());
//
//            /* Möchtest du ein Datum zu einem späteren Zeitpunkt auswählen, kannst du über die
//             * Variable days die entsprechenden Tage zum heutigen Datum hinzufügen. */
//            long days /* Tage werden immer über die erste Zahl nach = angegeben */ = 2 * 24 * 60 * 60 * 1000;
//            Date d2 = new Date(d1.getTime() + days);
//
//            admin.createFlightRealization(d2, d2, 2, 2);
//            System.out.println("Ausgewähltes Datum:" + d2.toString() + ". Für mehr Infos siehe Tab <-");

//            //Create Passenger
//            admin.createPassenger("Fabian", "Hoh", "Roßbergerstraße 1", 88368, "Bergatreute");
//            System.out.println("Passenger wurde angelegt!");

//            // Create Seat
//            admin.createSeat(8, 25);
//            System.out.println("Seat wurde angelegt!");
//
//            //Create Booking
//            admin.createBooking(1, 2);
//            System.out.println("Booking wurde angelegt!");

//             //CheckIn
//             admin.checkIn(3, 1);
//             System.out.println("CheckIn durchgeführt!");

//            // Create StandingOrderForBookings
//            Date d1 = new Date(System.currentTimeMillis());
//            long days /* Tage werden immer über die erste Zahl nach = angegeben */ = 21 * 24 * 60 * 60 * 1000;
//            Date d2 = new Date(d1.getTime() + days);
//            admin.createStandingOrderForBookings(d1, d2, 2, 1);
//
//            System.out.println("Startdatum: " + d1);
//            System.out.println("Enddatum: " + d2);
//            System.out.println("OK, für mehr Infos siehe Tab von Flugbuchung <-");

            /********* UPDATE ***********/

            //Update Airport
//            admin.updateAirport("LAX", "test2", "Los Angeles", "USA");
//            System.out.println("Airport wurde geändert!");
//
////          //Update Airline
//            admin.updateAirline(2, "Test2");
//            System.out.println("Airline wurde geändert!");
//
           //Update Aircraft
//              admin.updateAircraft(15, "TEst", 9, 7);
//              System.out.println("Aircraft wurde geändert!");
//
//            //Update TypeOfAircraft
//            admin.updateTypeOfAircraft(1, "A381", 1);
//            System.out.println("TypeOfAircraft wurde geändert!");
//
            //Update Flight
//            admin.updateFlight(1, "11:30:00", "Sonntag", "18:00:00", "Freitag", "MUC", "COL", 1);
//            System.out.println("Flight wurde geändert!");
//              long datum = 485734583454L;
//              Date d = new Date(datum);

              //Update FlightRealization

//            /* Dieses DATEobjekt verwendet das aktuelle Datum */
//            Date d1 = new Date(System.currentTimeMillis());
//
//            /* Möchtest du ein Datum zu einem späteren Zeitpunkt auswählen, kannst du über die
//             * Variable days die entsprechenden Tage zum heutigen Datum hinzufügen. */
//            long days /* Tage werden immer über die erste Zahl nach = angegeben */ = 9 * 24 * 60 * 60 * 1000;
//            Date d2 = new Date(d1.getTime() + days);
//
//            admin.updateFlightRealization(7, d2, d2, 2, 2);
//            System.out.println("Fligtrealization wurde geändert!" + d2.toString());

//           //Update Passenger
//            admin.updatePassenger(1, "Matthias", "Mustermann", "Musterstraße 10", 88368, "Musterdorf");
//            System.out.println("Passenger wurde geändert!");

//            //Update Seat
//            admin.updateSeat(3, 4, 5);
//            System.out.println("Seat wurde geändert!");
//
//            //Update Booking
//            admin.updateBooking(bookingId, passengerId, realizationId);


            /********* DELETE ***********/

//             //Delete Airport
//           admin.deleteAirport("LAX", "Los Angeles Airport", "Los Angeles", "USA");
//           System.out.println("Airport gelöscht!");
//
//            //Delete Airline
//            admin.deleteAirline(1, "Air Berlin");
//            System.out.println("Airline gelöscht!");
//
//            //Delete Aircraft
//            admin.deleteAircraft(1, "LH0009", 1, 1);
//            System.out.println("Aircraft gelöscht!");
//
//            //Delete TypeOfAircraft
//            admin.deleteTypeOfAircraft(1, "A380", 1);
//            System.out.println("TypeOfAircraft gelöscht!");
//
//            //Delete Flight
//            admin.deleteFlight(2, "12:10", "Sonntag", "17:00", "Sonntag", "LAX", "DAL", 1);
//            System.out.println("Flight gelöscht!");

//            //Delete FlightRealization
//            Date d = new Date(System.currentTimeMillis());
//            admin.deleteFlightRealization(1, d, d, 1, 1);
//            System.out.println("FlightR gelöscht!");

            //Delete Passenger
//            admin.deletePassenger(2, "Fabian", "Hoh", "Roßbergerstraße 1", 88368, "Bergatreute");
//            System.out.println("Passenger gelöscht!");
//
//            //Delete Seat
//            admin.deleteSeat(1, 3, 5);
//            System.out.println("Seat gelöscht!");
////
             //Delete Booking
//            admin.deleteBooking(1, 2, 3);
//            System.out.println("Siehe Meldung in Tab in dem Flugserver gestartet wurde.");
////////
//            //Delete AllBookings
//            admin.deleteAllBookingsFromPassenger(1);
//            System.out.println("AllBookings gelöscht!");


            /********* FIND-ALL ***********/

//            //FindAllAircraftsByAvailability
//            Date d1 = new Date(System.currentTimeMillis());
//            long days /* Tage werden immer über die erste Zahl nach = angegeben */ = 2 * 24 * 60 * 60 * 1000;
//            Date d2 = new Date(d1.getTime() + days);
//
//            admin.findAllAircraftsByAvailability(d2, d2, 1);
//            System.out.println("OK! Für mehr Infos siehe Tab <-");


            /********* TEST ************/

//            admin.getNumberOfAllSeatsOfFlightRealization(2);
//            System.out.println("OK!");

//            Date d1 = new Date(System.currentTimeMillis());
//            long days /* Tage werden immer über die erste Zahl nach = angegeben */ = 6 * 24 * 60 * 60 * 1000;
//            Date d2 = new Date(d1.getTime() + days);
//
//            admin.findBookingsByPassengerByAirlineAndByTimeframe(1, 2, d1, d2);
//            System.out.println("OK");

//            // Objekte zwischenspeichern
//            Flight f = admin.getFlightById(3);
//
//            admin.setCurrentFlight(f);
//
//                System.out.println("Id des zwischengespeicherten Flights: " + f.getFlightId() + ", Wochentag ist ein " + f.getDayOfDeparture());
//
//            Flight F = admin.getCurrentFlight();
//
//            if(F != null) {
//
//                System.out.println("Übergabe erfolgreich, Wochentag des ausgelesenen Flights: " + F.getDayOfDeparture());
//            }
//            else {
//                System.out.println("Übergabe fehlgeschlagen");
//            }

//            //Alle Buchungen einer FlightR. ausgeben
            admin.getAllBookingsByRealizationIdForTable(4);
            System.out.println("Ok!");
                


        } catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
        }

    }
}
